home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / hash / RCS / Hash_DeleteTable.c,v < prev    next >
Text File  |  1988-07-25  |  2KB  |  112 lines

  1. head     1.2;
  2. access   ;
  3. symbols  ;
  4. locks    ; strict;
  5. comment  @ * @;
  6.  
  7.  
  8. 1.2
  9. date     88.07.25.10.53.37;  author ouster;  state Exp;
  10. branches ;
  11. next     1.1;
  12.  
  13. 1.1
  14. date     88.06.20.09.30.21;  author ouster;  state Exp;
  15. branches ;
  16. next     ;
  17.  
  18.  
  19. desc
  20. @@
  21.  
  22.  
  23. 1.2
  24. log
  25. @Lint.
  26. @
  27. text
  28. @/* 
  29.  * Hash_DeleteTable.c --
  30.  *
  31.  *    Source code for the Hash_DeleteTable library procedure.
  32.  *
  33.  * Copyright 1988 Regents of the University of California
  34.  * Permission to use, copy, modify, and distribute this
  35.  * software and its documentation for any purpose and without
  36.  * fee is hereby granted, provided that the above copyright
  37.  * notice appear in all copies.  The University of California
  38.  * makes no representations about the suitability of this
  39.  * software for any purpose.  It is provided "as is" without
  40.  * express or implied warranty.
  41.  */
  42.  
  43. #ifndef lint
  44. static char rcsid[] = "$Header: Hash_DeleteTable.c,v 1.1 88/06/20 09:30:21 ouster Exp $ SPRITE (Berkeley)";
  45. #endif not lint
  46.  
  47. #include <hash.h>
  48. #include <list.h>
  49. #include <stdlib.h>
  50.  
  51. /*
  52.  *---------------------------------------------------------
  53.  *
  54.  * Hash_DeleteTable --
  55.  *
  56.  *    This routine removes everything from a hash table
  57.  *    and frees up the memory space it occupied (except for
  58.  *    the space in the Hash_Table structure).
  59.  *
  60.  * Results:    
  61.  *    None.
  62.  *
  63.  * Side Effects:
  64.  *    Lots of memory is freed up.
  65.  *
  66.  *---------------------------------------------------------
  67.  */
  68.  
  69. void
  70. Hash_DeleteTable(tablePtr)
  71.     Hash_Table *tablePtr;        /* Hash table whose entries are all to
  72.                      * be freed.  */
  73. {
  74.     register List_Links *hashTableEnd;
  75.     register Hash_Entry *hashEntryPtr;
  76.     register List_Links *bucketPtr;
  77.  
  78.     bucketPtr = tablePtr->bucketPtr;
  79.     hashTableEnd = &(bucketPtr[tablePtr->size]);
  80.     for (; bucketPtr < hashTableEnd; bucketPtr++) {
  81.     while (!List_IsEmpty(bucketPtr)) {
  82.         hashEntryPtr = (Hash_Entry *) List_First(bucketPtr);
  83.         List_Remove((List_Links *) hashEntryPtr);
  84.         free((Address) hashEntryPtr);
  85.     }
  86.     }
  87.     free((Address) tablePtr->bucketPtr);
  88.  
  89.     /*
  90.      * Set up the hash table to cause memory faults on any future
  91.      * access attempts until re-initialization.
  92.      */
  93.  
  94.     tablePtr->bucketPtr = (List_Links *) NIL;
  95. }
  96. @
  97.  
  98.  
  99. 1.1
  100. log
  101. @Initial revision
  102. @
  103. text
  104. @d17 1
  105. a17 1
  106. static char rcsid[] = "$Header: proto.c,v 1.2 88/03/11 08:39:08 ouster Exp $ SPRITE (Berkeley)";
  107. d20 3
  108. a22 2
  109. #include "hash.h"
  110. #include "list.h"
  111. @
  112.